package org.dxy.trigger.http.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.dxy.api.dto.request.workstation.CreateWorkstationRequestDto;
import org.dxy.api.dto.request.workstation.UpdateWorkstationRequestDto;
import org.dxy.api.response.R;
import org.dxy.infrastructure.persistent.db.mybatispuls.po.query.WorkstationBasicViewPo;

import java.util.List;

/**
 * 工位应用服务接口
 * @author dxy
 * @createTime 2025/9/4
 */
public interface WorkstationApplicationService {
    
    /**
     * 创建工位
     * @param dto 创建工位请求DTO
     * @return 创建结果
     */
    R<Void> createWorkstation(CreateWorkstationRequestDto dto);
    
    /**
     * 分页查询工位列表
     * @param page 分页参数
     * @param query 查询条件
     * @return 分页工位列表
     */
    R<Page<WorkstationBasicViewPo>> list(Page<WorkstationBasicViewPo> page, WorkstationBasicViewPo query);
    
    /**
     * 更新工位信息
     * @param id 工位ID
     * @param dto 更新工位请求DTO
     * @return 更新结果
     */
    R<Void> update(Long id, UpdateWorkstationRequestDto dto);
    
    /**
     * 删除工位
     * @param id 工位ID
     * @return 删除结果
     */
    R<Void> delete(Long id);
    
    /**
     * 批量删除工位
     * @param ids 工位ID列表
     * @return 批量删除结果
     */
    R<Void> batchDelete(List<Long> ids);
    
    /**
     * 获取工位详情
     * @param id 工位ID
     * @return 工位详情
     */
    R<WorkstationBasicViewPo> getById(Long id);
    
    /**
     * 根据产线ID获取工位列表
     * @param productionLineId 产线ID
     * @return 工位列表
     */
    R<List<WorkstationBasicViewPo>> getByProductionLineId(Long productionLineId);
    
    /**
     * 根据产线ID获取启用状态的工位列表
     * @param productionLineId 产线ID
     * @return 启用状态的工位列表
     */
    R<List<WorkstationBasicViewPo>> getEnabledByProductionLineId(Long productionLineId);
}